﻿using System;
using System.Linq;
using Z16.BLI;
using System.Data;
using System.Web.UI.WebControls;

namespace Z16.SITE
{
    public partial class addCadCamada : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if ((Session["CodPerfil"] == null) || (Session["CodUsr"] == null))
            {
                Response.Write("<script>window.location=\'Login.aspx';</script>");
                return;
            }

            if (!IsPostBack)
            {
                Session["codCamada"] = null;

                var codCamada = Request.QueryString["id"];
                if (codCamada != null)
                {
                    this.CarregarCamada(int.Parse(codCamada), null);
                    this.CarregarComplexidade();
                    this.CarregaCamadaPorComplexidade(int.Parse(codCamada));
                    divCamadaPorComplexidade.Visible = true;
                }
            }
        }

        protected void btnGravar_Click(object sender, EventArgs e)
        {
            divSucess.Visible = false;
            divError.Visible = false;

            int? codCamada = null;

            if (Request.QueryString["id"] != null)
                codCamada = int.Parse(Request.QueryString["id"]);

            try
            {
                if (txtCamada.Text != "")
                {
                    Camada camada = new Camada();

                    divSucess.Visible = true;
                    var ret = camada.incCamada(txtCamada.Text, codCamada);

                    var retorno = ret.Split(';');
                    this.ExibirMensagem(retorno[0], retorno[1]);

                    DataTable dt = camada.ListarCamadas(null, txtCamada.Text);
                    var cli = dt.AsEnumerable().ToList().First();
                    Session["codCamada"] = cli[0].ToString();

                    CarregarCamada(int.Parse(Session["codCamada"].ToString()), null);
                    CarregarComplexidade();
                    divCamadaPorComplexidade.Visible = true;
                    CarregaCamadaPorComplexidade(int.Parse(Session["codCamada"].ToString()));
                }
                else
                {
                    divError.Visible = true;
                }
            }
            catch
            {
                divError.Visible = true;
            }
        }

        protected void CarregarCamada(int? codCamada,string nome)
        {
            Camada camada = new Camada();

            DataTable dt = camada.ListarCamadas(codCamada, nome);
            var cli = dt.AsEnumerable().ToList().First();

            txtCamada.Text = cli[1].ToString();

            ddlCamada.Items.Clear();
            ddlCamada.AppendDataBoundItems = true;
            ddlCamada.Items.Insert(0, "Selecione");

            ddlCamada.DataSource = camada.ListarCamadas(null, null);
            ddlCamada.DataValueField = "Cod_Camada";
            ddlCamada.DataTextField = "Nome_Camada";
            ddlCamada.DataBind();

            ddlCamada.Enabled = false;
            ddlCamada.SelectedValue = codCamada.ToString();
        }

        protected void CarregarComplexidade()
        {
            Complexidade complexidade = new Complexidade();

            ddlComplexidade.Items.Clear();
            ddlComplexidade.AppendDataBoundItems = true;
            ddlComplexidade.Items.Insert(0, "Selecione");

            ddlComplexidade.DataSource = complexidade.ListarComplexidade(null, null);
            ddlComplexidade.DataValueField = "Cod_Complexidade";
            ddlComplexidade.DataTextField = "Nome_Complexidade";
            ddlComplexidade.DataBind();

        }

        protected DataTable CarregaCamadaPorComplexidade(int? codCamada)
        {
            CamadaPorComplexidade c = new CamadaPorComplexidade();
            DataTable tabela = null;

            try
            {
                tabela = c.ListarCamadasPorComplexidade(codCamada);
                GridView1.DataSource = tabela;
                GridView1.DataBind();
            }
            catch (Exception ee)
            {
                c = null;
            }
            finally
            {
                c = null;
            }
            return tabela;
        }

        protected void btnGravarCC_Click(object sender, EventArgs e)
        {
            divSucess.Visible = false;
            divError.Visible = false;

            int? codCamada = null;

            if (Request.QueryString["id"] != null)
                codCamada = int.Parse(Request.QueryString["id"]);
            else
                codCamada = int.Parse(Session["codCamada"].ToString());

            try
            {
                if (ddlComplexidade.SelectedIndex != 0)
                {
                    CamadaPorComplexidade camada = new CamadaPorComplexidade();

                    divSucess.Visible = true;
                    var ret = camada.incCamadaPorComplexidade(codCamada, int.Parse(ddlComplexidade.SelectedValue), float.Parse(txtValor.Text));

                    var retorno = ret.Split(';');
                    this.ExibirMensagem(retorno[0], retorno[1]);

                    CarregaCamadaPorComplexidade(codCamada);
                }
                else
                {
                    divError.Visible = true;
                }
            }
            catch
            {
                divError.Visible = true;
            }
        }

        protected void ExcluirCamadaPorComplexidade(object sender, GridViewDeleteEventArgs e)
        {

            int codCoplexidadeID = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());
            int codDemandaID = 0;

            if (Request.QueryString["id"] != null)
                codDemandaID = int.Parse(Request.QueryString["id"]);
            else
                codDemandaID = int.Parse(Session["codCamada"].ToString());

            CamadaPorComplexidade c = new CamadaPorComplexidade();
            try
            {
                c.ExcluirCamadaComplexidade(codDemandaID, codCoplexidadeID);

                lblMensagem.Text = "Registro deletado com sucesso.";
                GridView1.DataSource = c.ListarCamadasPorComplexidade(codDemandaID);
                GridView1.DataBind();
            }
            catch (Exception ee)
            {
                lblMensagem.Text = ee.Message;
            }
        }

        protected void ExibirMensagem(string erro, string mensagem)
        {
            if (erro.Equals("0"))
            {
                divSucess.Visible = true;
                lblMsg.Text = mensagem;
            }
            else
            {
                divError.Visible = true;
                lblErro.Text = mensagem;
            }
        }
    }
}